﻿#define _CRT_SECURE_NO_WARNINGS
//作者：爱吃糖的boy
#include<stdio.h>
//int main()
//{
//	int a = 100;
//	int* pa = &a;
//	*pa = 0;
//	printf("%d ",a);
//	return 0;
//}

//int main() 
//{
//	char* pa1;
//	int* pa2;
//	double* pa3;
//	 
//	return 0;
//
//}
//int main()
//{
//	int a = 0x11223344;
//	char* pa1 = &a;
//	//int *pa = &a;
//	*pa1 = 0;
//	return 0;
//}

//int main() 
//{
//	int a = 10;
//	int* pa = &a;
//	char* pc = (char*)&a;
//	printf("%p\n",pa);
//	printf("%p\n",pc);
//	/*000000D1A518F544
//	  000000D1A518F544*/
//	
//	/*000000D1A518F548
//	  000000D1A518F545*/
//	printf("%p\n", pa+1);
//	printf("%p\n", pc+1);
//
//	//结论：指针的类型决定了指针向前或者向后⾛⼀步有多⼤（距离）。
//	return 0;
//}

//int main() 
//{
//	int arr[10] = {0};
//	char* p =  (char*) & arr[0];
//	//int* p = &arr[0];
//	//for (int i = 0; i < 10; i++)
//	//{
//	//	arr[i] = i;
//	//}
//	//for (int i = 0; i < 10; i++)
//	//{
//	//	printf("%d ",arr[i]);
//	//}
//	for (int i = 0; i < 10; i++)
//	{
//		*p = 1;
//		p++;
//	}
//	int *pc = arr;
//	for (int i = 0; i < 10; i++)
//	{
//		printf("%d ", *pc);
//		pc++;
//	}
//	return 0;
//
//}

//int main() 
//{
//	//void指针
//	int a = 10;
//	char n = 'm';
//	int* pa = &a;
//	char* pc = & a;  //warning C4133: “初始化”: 从“int *”到“char *”的类型不兼容
//
//	void* pv = &a;
//	void* pv2 = &n;
//
//	//*pv; err
//	//pv++; err
//	//不能解引用，和加减，无法进行指针运算
//	return 0;
//
//}

//int main() 
//{
//	////const修饰指针 ---》常属性
//	//int a = 10;
//	////const int a = 10;  a的本质还是变量，只是在语法上做了限制，a= 常变量
//
//	//a = 20;
//
//	const int a = 10;
//	//int* pa = &a;//a的值改变，通过地址解引用修改变量
//	const int* pa = &a;//a的值无法改变
//	*pa = 20;
//	printf("%d ",a);
//	return 0;
//
//}

//const修饰指针
//const可以放在*的左边
//const可以放在*的右边
int main()
{

	//const如果放在* 的左边，修饰的是指针指向的内容，保证指针指向的内容不能通过指针来改变。但是指针变量本⾝的内容可变。
	//const如果放在*的右边，修饰的是指针变量本⾝，保证了指针变量的内容不能修改，但是指针指向的内容，可以通过指针改变。
	const int a = 0;
	const int* pa = &a;    //const 修饰*pa,不能通过pa 来修改pa 指向的内容
	const int* const pc = &a;//pc和*pc都被限制

	int* const pa1 = &a;   //
	//*pa = 0;
	*pa1 = 0;
	printf("%d \n" ,*pa);
	printf("%d \n" ,*pa1);
	return 0;
	//pa 里面存放地址
	//pa 是变量，有自己的地址
	//*pa 是pa指向的空间
}